<html>
<head><meta charset="utf-8"><title>Automating Releases · t-release · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/index.html">t-release</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html">Automating Releases</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="243213101"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243213101" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> XAMPPRocky <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243213101">(Jun 18 2021 at 22:13)</a>:</h4>
<p>Another thing that came to mind, was that I remember at one point there was discussion about automating Rust’s release process, but I don’t remember any further movement on that. I think we should try to prioritise this more over the coming year or years if it takes that long, so that <span class="user-mention" data-user-id="116122">@simulacrum</span> and <span class="user-mention" data-user-id="121055">@Pietro Albini</span> have more time to do other things.</p>
<p>I’d be happy to dedicate the time to implementing automations, but we’d obviously need to start with planning what to automate from here and how to do so. <a href="https://forge.rust-lang.org/release/process.html">https://forge.rust-lang.org/release/process.html</a></p>



<a name="243213208"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243213208" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243213208">(Jun 18 2021 at 22:15)</a>:</h4>
<p>I do want to work on this, I think starting by creating scripts for each section of code block in that file is a good method. I was thinking that triagebot commands via Zulip would work well for the stuff that is best to not run locally (e.g., bumping the version number could be made into its own zulip command)</p>



<a name="243213260"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243213260" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243213260">(Jun 18 2021 at 22:16)</a>:</h4>
<p>In fact that's probably a good way to start - low cost and fairly simple</p>



<a name="243213302"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243213302" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243213302">(Jun 18 2021 at 22:17)</a>:</h4>
<p>But a good portion of the release steps are unfortunately currently somewhat manual and I'm not sure how easy changing that will be - resolving merge conflicts and fixing CI bugs seems like it'll always be manual.</p>



<a name="243213567"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243213567" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> XAMPPRocky <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243213567">(Jun 18 2021 at 22:22)</a>:</h4>
<p>Yeah, it can probably never be fully automated (and there’s a question of even if it should be), but I think the ideal state is if there are no CI bugs, that you are just clicking a single button (or multiple buttons if we wanted to break up starting certain parts of the release until someone has clicked the next button)</p>



<a name="243238417"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243238417" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243238417">(Jun 19 2021 at 08:55)</a>:</h4>
<p>I also agree we need to automate, but it's unlikely I would personally have time for that</p>



<a name="243238423"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243238423" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243238423">(Jun 19 2021 at 08:55)</a>:</h4>
<p>the only note I'd make is that I'd really prefer for the release process things not to be on triagebot</p>



<a name="243238437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243238437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243238437">(Jun 19 2021 at 08:56)</a>:</h4>
<p>but instead adding them to <a href="https://github.com/rust-lang/promote-release">https://github.com/rust-lang/promote-release</a></p>



<a name="243238485"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243238485" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243238485">(Jun 19 2021 at 08:56)</a>:</h4>
<p>promote-release has good support for testing, and the most important thing is that it has stricter ACL for who can commit to the repo</p>



<a name="243238494"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243238494" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243238494">(Jun 19 2021 at 08:57)</a>:</h4>
<p>I wouldn't want having release process bits in triagebot preventing us from adding other maintainers to triagebot in the future</p>



<a name="243238687"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243238687" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243238687">(Jun 19 2021 at 09:01)</a>:</h4>
<p>thinking about it a bit more and looking at the current release steps, I think we can use different approaches for release-day and other days</p>



<a name="243238739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243238739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243238739">(Jun 19 2021 at 09:02)</a>:</h4>
<p>most of the stuff in the other days is creating a PR with some "common" changes and possibly other manual changes (like fixing CI or adding a backport), for that just a local script that creates the branch with all the local changes would be great</p>



<a name="243238757"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243238757" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243238757">(Jun 19 2021 at 09:03)</a>:</h4>
<p>so, for example, on Tue it would:</p>
<ul>
<li>disable branch protection</li>
<li>force-push branches</li>
<li>enable branch protection</li>
<li>create a branch with the updated stage0 and channel</li>
</ul>



<a name="243238805"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243238805" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243238805">(Jun 19 2021 at 09:04)</a>:</h4>
<p>then the only thing you'd need is to run:</p>
<div class="codehilite"><pre><span></span><code>./release-pr-tue.py
git push -u origin
# follow the link and create the PR
</code></pre></div>



<a name="243238816"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243238816" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243238816">(Jun 19 2021 at 09:05)</a>:</h4>
<p>and for release day things (like signing and pushing git tags, or rebuilding thanks) I'd just implement those things in promote-release, especially because it knows exactly when to run them as it's driving the whole release process</p>



<a name="243238822"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243238822" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Pietro Albini <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243238822">(Jun 19 2021 at 09:05)</a>:</h4>
<p>thoughts?</p>



<a name="243238958"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243238958" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> XAMPPRocky <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243238958">(Jun 19 2021 at 09:09)</a>:</h4>
<p>Sounds reasonable to me.</p>



<a name="243245458"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241545-t-release/topic/Automating%20Releases/near/243245458" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/241545-t-release/topic/Automating.20Releases.html#243245458">(Jun 19 2021 at 11:39)</a>:</h4>
<p>I think generally that's all ok, but I would look for ways we can either add safe invocations on top of it or otherwise seek to remove the credential in local environment dependency in the long run.</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>